# 需求：小猫爱吃鱼，小猫要喝水
# 类名：Cat
# 属性：暂无
# 方法：Eat, Drink


class Cat:  # 类的设计
    def eat(self):  # 方法定义
        # 注意到 self 这个形参会自动填充，它接收的实参是解释器自动发送的对象引用
        print(f'{id(self)}, 小猫{self.name}爱吃鱼')

    def drink(self):
        print(f'{id(self)}, 小猫{self.name}要喝水')


blue_cat = Cat()  # 创建对象1，基于此类下的对象，此后可以通过对象来调用对应类下的方法
blue_cat.name = '蓝猫'  # 给对象1添加属性1，一般不会在类外添加属性
print(id(blue_cat))
red_cat = Cat()  # 创建对象2，基于此类下的对象，此后可以通过对象来调用对应类下的方法
red_cat.name = '红猫'  # 给对象2添加属性2，一般不会在类外添加属性
print(id(red_cat))
blue_cat.eat()  # 调用方法，注意到也就是调用了定义好的方法函数，不需要添加实参，因为对象就是这里的实参
blue_cat.drink()
red_cat.eat()
red_cat.drink()
